package methodref01;

import org.junit.Test;
import java.util.function.Consumer;

/**
 * 方法引用概述:
 *  当我们使用已有类中的方法作为Lambda表达式对应的接口中的抽象方法实现
 *  我们可以用方法引用来简化Lambda表达式
 */
public class MethodRefDemo01 {
    @Test
    public void test01(){
        Consumer<String> c = str-> System.out.println(str);
        c.accept("abc");  // abc
    }

    @Test
    public void test02(){
        //Consumer<String> c = str-> System.out.println(str);
        Consumer<String> c = System.out::println;
             //System.out代表我们要引用的类
            //::后面的println代表我们引用的方法
        c.accept("abc");  // abc
    }
}
/**
 *   class MethodRefDemo01$$Lambda$1 implements Consumer<String>{
 *
 *       public void accept(String str){
 *           System.out.println(str);
 *           //我们使用是PrintStream类中的println(String str)方法
 *           //作为str -> System.out.println(str)对应的Consumer<String>
 *           //中accept(String str)的实现
 *       }
 *   }
 */
